﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<stdlib.h>
#include<time.h>


//int main()
//{
	//printf("%d\n", rand()); //rand函数会返回⼀个伪随机数
					     //这个随机数的范围是在0~RAND_MAX之间
						//RAND_MAX的⼤⼩是依赖编译器上实现的
					   //但是⼤部分编译器上是32767
	//printf("%d\n", rand());
	//可以发现每次运行的结果都是一样的
	//可以得出rand函数⽣成的随机数是伪随机的
	//伪随机数不是真正的随机数，是通过某种算法⽣成的随机数。
	//rand函数是对⼀个叫“种⼦”的基准值进⾏运算⽣成的随机数。
//}

//C语⾔中⼜提供了⼀个函数叫 srand，⽤来初始化随机数的⽣成器的
//语法是：》》  void srand(unsigned int seed);

//在程序中我们⼀般是使⽤程序运⾏的时间作为种⼦的，因为时间时刻在发⽣变化的
//在C语⾔中有⼀个函数叫time，就可以获得这个时间
//语法是：》》》  time_t time (time_t* timer);
//time函数的时候需要包含头⽂件：time.h
//time函数返回的这个时间差也被叫做：时间戳。
//就是返回1970年1⽉1⽇0时0分0秒到现在程序运⾏时间之间的差值，单位是秒

//int main()
//{
//	srand((unsigned int)time(NULL));
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	printf("%d\n", rand());
//	//现在运行就可以让每次的结果都不一样
//	//通过srand函数的参数seed来设置rand函数⽣成随机数的时候的种⼦
//	//只要种⼦在变化，每次⽣成的随机数序列也就变化起来了
//}


//如果要⽣成a~b的随机数
//a + rand()%(b-a+1)
//int main()
//{
//	int num = 0; //猜的数字
//	int result = 0; //随机数
//	int a = 0;		//菜单
//	srand((unsigned int)time(NULL));
//	result = rand() % 100 + 1;//随机数在1~100
//	int count = 0; //次数
//	do
//	{
//		printf("--------------------------------------------\n");
//		printf("-------------------1.play-------------------\n");
//		printf("-------------------0.exit-------------------\n");
//		printf("--------------------------------------------\n");
//		printf("请选择>");
//		scanf("%d", &a);
//		switch (a)
//		{
//		case 1:
//			count = 5;
//			while (count)
//			{
//				printf("你还有%d次机会\n",count);
//				printf("请输入要猜的数字:> ");
//				scanf("%d", &num);
//				if (num == result)
//				{
//					printf("恭喜你猜对了！\n");
//					break;
//				}
//				else if (num < result)
//				{
//					printf("很遗憾，猜小了\n");
//				}
//				else
//				{
//					printf("很遗憾，猜大了\n");
//				}
//				count--;
//			}
//			if (count == 0)
//			{
//				printf("游戏失败，正确的值是%d\n", result);
//			}
//			break;
//		case 0:
//			printf("游戏结束");
//			break;
//		default:
//			printf("选择错误，请重新选择\n");
//			break;
//		}
//	} while (a);
//	return 0;
//}



//优化
void guess() 
{
	int guess = 0;
	int count = 5;
	int result = 0;
	result = rand() % 100 + 1;
	while (count)
	{
		printf("你还有%d次机会\n",count);
		printf("请输入你要猜的数字:>");
		scanf("%d", &guess);
		if (guess == result)
		{
			printf("恭喜你，猜对了！\n");
			break;
		}
		else if (guess > result)
		{
			printf("很遗憾，猜大了\n");
		}
		else
			printf("很遗憾，猜小了\n");
		count--;
	}
	if (count == 0)
	{
		printf("游戏失败，正确的数是%d\n", result);
	}
}

int choice(input)
{
	switch (input)
	{
	case 0:
		printf("游戏结束");
		break;
	case 1:
		guess(); //游戏
		break;
	default:
		printf("输入错误，请重新输入\n");
	}
}

void meun()
{
	printf("--------------------------------------------\n");
	printf("-------------------1.play-------------------\n");
	printf("-------------------0.exit-------------------\n");
	printf("--------------------------------------------\n");
}


int main()
{
	int input = 0;
	srand((unsigned int)time(NULL));
	do
	{
		meun(); //菜单
		printf("请选择>");
		scanf("%d", &input);;
		choice(input);
	} while (input);
	return 0;
}

